package service.iml;

import dao.iml.DaoLogicImp;
import javabean.Student;
import service.ServiceLogic;
import ui.show;

import java.util.Scanner;

public class ServiceLogicImp implements ServiceLogic {
//    ！在业务逻辑层创建一个数据访问层的对象，用于调用数据访问层的方法
    DaoLogicImp daoLogicImp=new DaoLogicImp();//这个是我手打上去的，不是自动补全的

    /**
     * 数据录入的业务逻辑
     * @param stu
     */
    @Override
    public void addStuService(Student []stu) {
//        当用户输入的长度为零时，无法输入学生数据
        /*if(len==0){
            System.out.println("无法输入学生数据");
            return;
        }*/
        daoLogicImp.addStuDaoLogic(stu);
    }


    /**
     * 数据打印的业务逻辑
     * @param stu
     * @param len
     */
    @Override
    public void printStuService(Student []stu,int len) {
        System.out.println("-------打印学生信息如下------");
        System.out.println("学号\t姓名\t年龄");
        daoLogicImp.printStuDaoLogic(stu,len);
    }

    /**
     * 数据删除的业务逻辑
     * @param stu
     * @param len
     * @param xuehao
     * @return
     */
    @Override
    public Boolean delStuService(Student[] stu, int len, String xuehao) {
        //        System.out.println("555");
//        System.out.println("请输入你要删除的学生学号：");
//        1.判断库是否存在
        if(len==0){
            System.out.println("要删除的库不存在！");
            return false;
        }
//        System.out.println("666");
//        2.判断要删除的学号是否存在
        Integer oneStuDao = daoLogicImp.findOneStuDao(stu,show.index,xuehao);
//        System.out.println("oneStuDao = " + oneStuDao);
        if(oneStuDao==null){
            System.out.println("您要删除的学号不存在，请重新输入！");
            return false;
        }else{
//            调用数据访问层实现删除操作
            daoLogicImp.delStuDaoLogic(stu,len,oneStuDao);//删除成功,注意这个参数oneStuDao，
            // 好好理解一下！还有理解一下show.index和show.index+1
            show.index--;//实际长度减1
            return true;
        }
    }

    /**
     * 数据修改的业务逻辑
     * @param stu
     * @param xuehao
     * @return
     */
    @Override
    public Boolean updateStuService(Student[] stu, String xuehao) {
        Integer oneStuDao = daoLogicImp.findOneStuDao(stu,show.index,xuehao);//上面String xuehao拿到值
        // 才给findOne，所以findOne的参数是xuehao而不是xuehao1
        if (oneStuDao==null){
            System.out.println("要修改的学生不存在，请重新输入学号！");
        }else{
//            1.创建一个新的Student对象，用来放新的学号姓名年龄
            Student newstu = new Student();
            Scanner scanner = new Scanner(System.in);
//            准备好要更新的数据信息，具体的更新操作在数据访问层实现
            System.out.println("请输入新的学号"+"(原学号为"+stu[oneStuDao].getId()+"):");
//            2.newstu.setId(scanner.next());
            String id = scanner.nextLine();
            if (id.equals("")){
                newstu.setId(stu[oneStuDao].getId());
            }else{
                newstu.setId(id);
            }

            System.out.println("请输入新的姓名"+"(原姓名为"+stu[oneStuDao].getName()+"):");
//            3.newstu.setName(scanner.next());
            String name = scanner.nextLine();
            if (name.equals("")){
                newstu.setName(stu[oneStuDao].getName());
            }else{
                newstu.setName(name);
            }

            System.out.println("请输入新的年龄"+"(原年龄为"+stu[oneStuDao].getAge()+"):");
//            4.newstu.setAge(scanner.nextInt());
            String age = scanner.nextLine();
            if (age.equals("")){
                newstu.setAge(stu[oneStuDao].getAge());
            }else{
                newstu.setAge(Integer.valueOf(age));
            }
//            调用数据访问层的方法，更新成功返回true
            Boolean aBoolean = daoLogicImp.updateStuDao(stu, newstu, oneStuDao);
            return aBoolean;
        }
//        更新失败返回null
        return null;
    }

    /**
     * 用户名
      * @param admin 从控制台读取到的用户名
     * @return
     */
    @Override
    public Boolean checkAdminService(String admin) {
        Boolean a = daoLogicImp.checkAdminDao(admin);
        if(a){
            return true;
        }
//        System.out.println("该用户名不存在！");
        return false;
    }

    /**
     * 密码
     * @return
     */
    @Override
    public Boolean checkPssWordService(Integer password) {
        Boolean b = daoLogicImp.checkPssWordDao(password);
        if(b){
            return true;
        }
        return false;
    }

    /**
     * 验证码
     * @return
     */
    @Override
    public Boolean checkCodeService(String code) {
        return null;
    }
}
